#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>

int unval;
int gval = 100;

int main()
{
    printf("code addr: %p\n", main);
    printf("gval addr: %p\n", &gval);
    printf("unval addr: %p\n", &unval);

    int *mem = (int*)malloc(10*sizeof(int));
    printf("heap add: %p\n", mem);


    int a,b,c;
    printf("stack addr : %p\n", &a);
    printf("stack addr : %p\n", &b);
    printf("stack addr : %p\n", &c);
//
//    printf("我是一个进程, pid: %d, ppid: %d\n", getpid(), getppid());
//    pid_t id = fork();
//    if(id == 0)
//    {
//      // child
//        while(1)
//        {
//          printf("我是子进程, pid : %d, ppid : %d, gval: %d, &gval: %p\n", getpid(), getppid(), gval, &gval);
//          gval++;
//          sleep(1);
//        }
//    }
//    else
//    {
//      //parent
//        while(1)
//        {
//          printf("我是父进程, pid : %d, ppid : %d, gval: %d, &gval: %p\n", getpid(), getppid(), gval, &gval);
//          sleep(1);
//        }
//     }
}






































//extern char ** environ;
//
//int main()
//{
//    for(int i = 0;environ[i];i++)
//    {
//        printf("%s\n",environ[i]);
//    }
//
//
//    //char* isrunning = getenv("ISRUNNING");
//    //printf("ISRUNNING:%s\n",isrunning);
//    //if(isrunning == NULL)
//    //{
//    //    while(1)
//    //    {
//    //        printf("当前进程首次启动!\n");
//    //        sleep(1);
//    //    }
//    //}else
//    //{
//    //    printf("当前进程已经运行了，不要在启动了!\n");
//    //}
//
//
//    //我可以让我的程序，识别用户身份，只让JR用户进行 访问
//    //const char* who = getenv("USER");
//    //if(strcmp(who,"JR")==0)
//    //{
//    //    printf("执行程序的正常命令！\n");
//    //    return 0;
//    //}else
//    //{
//    //    printf("无权访问!\n");
//    //    return 1;
//    //}
//
//   //printf("User:%s\n",getenv("USER"));
//   //printf("%s\n",getenv("PWD"));
//    return 0;
//}
